﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CROSLAND.BL.BE;

namespace CROSLAND.DL.DALC
{
    public interface IClienteDALC
    {
        /// <summary>
        /// Retorna la lista de interlocutores asociados al Cliente
        /// </summary>
        /// <param name="pCodCliente">Código SAP</param>
        /// <param name="pCodOrgVtas">Org. de ventas del usuario</param>
        /// <param name="pCodCanalDist">Canal del usuario</param>
        /// <param name="pSector">Sector del usuario</param>
        /// <returns></returns>
        List<InterlocutorBE> buscaInterlocutores(string pCodCliente, string pCodOrgVtas, string pCodCanalDist, string pSector);
        /// <summary>
        /// [No se utiliza aún] Valida que el NIF sea válido
        /// </summary>
        /// <param name="pRuc"></param>
        /// <param name="pOrgVtas"></param>
        /// <returns></returns>
        string validaRUC(string pRuc, string pOrgVtas);
        /// <summary>
        /// Búsca cliente por código (o NIF) y descripción
        /// </summary>
        /// <param name="pCodigo">Código o NIF de cliente</param>
        /// <param name="pNombre">Descripción</param>
        /// <param name="uw">Usuario Web (Con datos básicos del usuario: Org. Vtas, Canal, Sector)</param>
        /// <returns></returns>
        List<ClienteBE> buscarCliente(string pCodigo, string pNombre, UsuarioWebBE uw);

        List<ClienteBE> buscarEntFin(string pCodigo, string pNombre, UsuarioWebBE uw);
        /// <summary>
        /// Crea cliente
        /// </summary>
        /// <param name="objCli">Objeto con data necesaria para crear cliente</param>
        /// <param name="usrWeb">Usuario Web</param>
        /// <param name="codCli">Código de cliente generado</param>
        /// <returns></returns>
        string creaCliente(ClienteBE objCli, UsuarioWebBE usrWeb, out string codCli);
        /// <summary>
        /// Modifica cliente
        /// </summary>
        /// <param name="objCli">Objeto con data necesaria para modificar cliente</param>
        /// <param name="usrWeb">Usuario Web</param>
        string modificaCliente(ClienteBE objCli, UsuarioWebBE usrWeb);

        List<GenericBE> buscaVendedor(string txtVen, string codVen, string ofVta, DateTime fecha);

        List<ClienteBE.BancoBE> listaBanco(string codCliente, string soc);
    }
}
